home *** CD-ROM | disk | FTP | other *** search
- #! /bin/bash
-
- # paperconfig: configuration of system paper name
- #
- # Copyright (C) 1996, Yves Arrouye <arrouye@debian.org>
- # 2001, Adrian Bunk <bunk@fs.tum.de>
-
- usage() {
- if [ "$1" = -h ]
- then
- exec 1>&2
- echo -n U
- else
- echo -n u
- fi
-
- echo "sage: `basename $0` [ -v, --version ] [ -h, --help ] [ -p, --paper name | --force ]"
-
- if [ "$1" = -h ]
- then
- cat <<EOF
-
- Options: -v, --verbose print version information and exit
- -h, --help print this help and exit
- -p, --paper name specify the paper to use
- --force force paper configuration
- EOF
- exit 0
- else
- exit 1
- fi
- }
-
- # "|| true" added below, to assure that the script does not fail even if
- # called with bash -e. (MP 22/08/98)
-
- unset PAPERSIZE || true
- : ${PAPERCONF:=/etc/papersize}
- export PAPERCONF
-
- unset PAPERDIR || true
- : ${PAPERDIR:=/etc/libpaper.d}
- export PAPERDIR
-
- force=0
-
- if [ "$#" == 0 ]
- then
- usage
- fi
-
- while [ $# -ne 0 ]
- do
- case "$1" in
- -v|--version)
- echo "`basename $0` version 1.0" \
- "by Yves Arrouye <arrouye@debian.org>"
- exit 0
- ;;
- -h|--help)
- usage -h
- ;;
- -p|--paper)
- test $# -gt 1 || usage
- paper="$2"
- shift
- ;;
- --force)
- force=1
- ;;
- *)
- usage
- ;;
- esac
- shift
- done
-
- invalidpaper() {
- ! paperconf "$1" 2>/dev/null 1>&2
- }
-
- format() {
- _maxwidth=$1; shift
- _start="$1"; shift
-
- _cline=
-
- for w
- do
- if [ `echo "$_start$_cline$w " | wc -c` -ge 0$_maxwidth ]
- then
- echo "$_cline"
- _cline=
- _start=
- fi
- _cline="$_cline$w "
- done
-
- if [ -n "$_cline" ]
- then
- echo "$_cline"
- fi
-
- unset _maxwidth _cline _start
- }
-
- # "chmod 644" added below, to assure that the conf file is created
- # with the right access permissions (MP 13/05/2000)
-
- setpaper() {
- paperright=`paperconf "$1" 2>/dev/null`
-
- ok=0
-
- if 2>/dev/null echo "$paperright" >${PAPERCONF}.new
- then
- if 2>/dev/null mv -f ${PAPERCONF}.new $PAPERCONF
- then
- if 2>/dev/null chmod 644 $PAPERCONF
- then
- ok=1
- fi
- fi
- fi
-
- if [ $ok -eq 0 ]
- then
- echo `basename $0`: cannot create $PAPERCONF
- exit 2
- else
- #
- # Added code for calling back applications when
- # papersize changes. See bug #345466
- # eppesuig@debian.org, 2006-01-05
- if [ -d ${PAPERDIR} ]
- then
- run-parts ${PAPERDIR}
- fi
- fi
- }
-
- if [ ! -z "$paper" ]
- then
- if invalidpaper $paper
- then
- >&2 echo `basename $0`: \"$paper\" is not a known paper name
- exit 3
- fi
- setpaper "$paper"
- exit 0
- fi
-
- knownpapers="`paperconf -a`"
-
- prompt=
- width=72
-
- # "|| true" added below, to assure that the script does not fail even if
- # called with bash -e. (MP 22/08/98)
-
- paper=`paperconf 2>/dev/null || true`
- dftpaper=`paperconf -d`
-
- if [ $force -eq 1 ] || [ ! -e $PAPERCONF ] || invalidpaper $paper
- then
- papers="`format $width \"\" $knownpapers`"
- echo
-
- if [ -x /usr/bin/pager ]
- then
- : ${PAGER:=/usr/bin/pager}
- fi
- if [ -x /bin/more ]
- then
- : ${PAGER:=/bin/more}
- fi
- : ${PAGER:=cat}
-
- LESS="-X -E $LESS"
- export LESS
-
- (
- cat <<EOF
- The default (also known as system) paper can be chosen from many known
- papers that are currently recognized by programs using the libpaper
- library (with libpaper, paper names are case insensitive; if you use
- programs that use the system paper size but do not rely on the libpaper
- library, this may not be true and some of the papers listed below may
- not be known by these programs):
-
- EOF
- echo "$papers" | sed 's/^/ /'
- echo
- ) | ${PAGER}
-
- : ${paper:=$dftpaper}
-
- echo -n "Default paper name? [$paper] "
- read ans
- : ${ans:=$paper}
- paper=$ans
- fi
-
- while invalidpaper "$paper"
- do
- if [ -z "$paper" ]
- then
- echo "Please choose a paper from the available papers list."
- else
- echo "Unknow paper \"$paper\"," \
- "please choose one from the available papers list."
- fi
-
- paper=$dftpaper
-
- echo -n "Default paper name? [$paper] "
- read ans
- paper=$ans
- done
-
- if [ "`paperconf 2>/dev/null`" != "$paper" ] || grep -q "[# ]" $PAPERCONF
- then
- setpaper "$paper"
- fi
-
- exit 0
-
-